centos-docker安装
安装docker ce版本
- 清理老版本docker
yum remove docker \
docker-common \
docker-selinux \
docker-engine
- 安装虚拟工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
- 获取最新ce版本的repo
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
查看安装版本
`yum list docker-ce --showduplicates | sort -r`安装ce版本
yum install docker-ce启动docker
systemctl start docker
docker 配置
如果你不是使用yum安装的flannel,那么需要下载flannel github release中的tar包,
解压后会获得一个mk-docker-opts.sh文件,到flannel release页面下载对应版本的安装包,
该脚本见mk-docker-opts.sh,因为我们使用yum安装所以不需要执行这一步
这个文件是用来Generate Docker daemon options based on flannel env file
使用systemctl命令启动flanneld后,会自动执行./mk-docker-opts.sh -i生成如下两个文件环境变量文件
- /run/flannel/subnet.env
FLANNEL_NETWORK=172.30.0.0/16
FLANNEL_SUBNET=172.30.46.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=false
- /run/docker_opts.env
DOCKER_OPT_BIP="--bip=172.30.46.1/24"
DOCKER_OPT_IPMASQ="--ip-masq=true"
DOCKER_OPT_MTU="--mtu=1450"
Docker将会读取这两个环境变量文件作为容器启动参数
注意:不论您用什么方式安装的flannel,下面这一步是必不可少的
- docker.service文件中添加如下环境变量文件,确保万一 docker 17.12.0-ce版本使用如下service文件
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer
[Service]
Type=notify
NotifyAccess=all
EnvironmentFile=-/run/flannel/docker
EnvironmentFile=-/run/docker_opts.env
EnvironmentFile=-/run/flannel/subnet.env
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
EnvironmentFile=-/run/docker_opts.env
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd \
--exec-opt native.cgroupdriver=systemd \
$DOCKER_OPT_BIP \
$DOCKER_OPT_IPMASQ \
$DOCKER_OPT_MTU \
-s=overlay2 \
--log-driver=json-file
# --insecure-registry=sz-pg-oam-docker-hub-001.tendcloud.com
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
MountFlags=slave
[Install]
WantedBy=multi-user.target
- docker.service文件中添加如下环境变量文件,确保万一 docker 18.03.0-ce版本使用如下service文件
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile=-/run/flannel/docker
EnvironmentFile=-/run/docker_opts.env
EnvironmentFile=-/run/flannel/subnet.env
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
EnvironmentFile=-/run/docker_opts.env
ExecStart=/usr/bin/dockerd --exec-opt native.cgroupdriver=systemd \
$DOCKER_OPT_BIP \
$DOCKER_OPT_IPMASQ \
$DOCKER_OPT_MTU \
-s=overlay2 \
--log-driver=json-file
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
请注意: docker ce 17 与 18的service配置不一样,如17就使用17service文件,如18请使用18文件,不然在18中使用17版本文件,使用 systemctl 操作时unit启动会失败
- docker.service 需要添加如下配置,为确保cgroup driver一致
ExecStart中添加 --exec-opt native.cgroupdriver=systemd
- 启动docker
systemctl daemon-reload
systemctl enable docker
systemctl restart docker
ansible 脚本
---
- hosts: all
remote_user: root
gather_facts: False
tasks:
- name: 清理老版本
shell: yum remove docker docker-common docker-selinux docker-engine
- name: 安装工具
shell: yum install -y yum-utils device-mapper-persistent-data lvm2
- name: 获取最新ce
shell: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- name: 安装ce
shell: yum -y install docker-ce
register: result
- name: 输出信息
debug: var=result.stdout
- name: 启动
shell: systemctl start docker